#ifndef EXECUTION_
#define EXECUTION_

#include "casual_includes.h"
#include "../libbourse/alea.h"
#include "../libcomm/logger.h"
#include "../libcomm/message.h"
#include "../libcomm/communication.h"
#include "../libbourse/PrixAchatVente.h"

typedef struct {
	//[numéro de l'action][caractères]
	char** id;
	char** val;
	char** stock;
}action;

/**
 * Execution recoit les ordres provenant du serveur d'acquisition, traite les transactions
 * et envoie les accusés de réception.
 *
 * Il prend en argument deux desripteurs de fichiers (0 et 1 pour tester dans le terminal)
 */
/**
 * Permet de démarrer un serveur acquisition
 * @param mdl module lié au serveur acquisition
 * @param port port sur lequel le serveur se bind
 * ATTENTION: le port du serveur d'exécution doit être celui de son serveur d'acquision+1
 */
void launch_execution(module* mdl, const int port);
msg* execution_msg(msg *mess, int *stock_restant, action *act, int nombre_actions);
msg* execution(char* emetteur,char* type_transaction,char* id_action_ordre,char* quantite_ordre,int *stock_restant, action *act, int nombre_actions);

#endif /*EXECUTION_*/
